package com.bear.fastrepair.http.api

import com.bear.fastrepair.entity.*
import retrofit2.http.*

/**
 * 管理员API
 */
interface ManagerService {
    /**
     * 新增管理员
     * @param createManagerInfo [CreateManagerInfo]
     * @return ResponseInfo
     */
    @POST("adminUser")
    suspend fun addManager(@Body createManagerInfo: CreateManagerInfo): ResponseInfo

    /**
     * 管理员后台用户个人信息
     * @return [ManagerInfoResponse]
     */
    @GET("adminUser/info")
    suspend fun getManagerInfo(): ManagerInfoResponse

    /**
     * 管理员登录
     * @param managerLogin [ManagerLoginInfo]
     * @return ResponseInfo
     */
    @POST("adminUser/loginNoCode")
    suspend fun managerLogin(@Body managerLogin: ManagerLoginInfo): ResponseInfo

    /**
     * 分页查询管理员用户
     * @param current Int 当前页码，从1开始
     * @param size Int 每页条数，最大100
     * @param account String 账号
     * @param regionCode String 区域编码
     * @param userName String 用户名
     * @return [ManagerInfoPage]
     */
    @GET("adminUser/page")
    suspend fun getManagerInfoPage(
        @Query("current") current: Int,
        @Query("size") size: Int,
        @Query("account") account: String = "",
        @Query("regionCode") regionCode: String = "",
        @Query("userName") userName: String = ""
    ): ManagerInfoPage

    /**
     * 重置密码
     * @param resetPassword [ResetPasswordBean]
     * @return ResponseInfo
     */
    @PUT("adminUser/resetPasswd")
    suspend fun resetPassword(@Body resetPassword: ResetPasswordBean): ResponseInfo

    /**
     * 通过 [id] 查询管理员用户
     * @param id String
     * @return [ManagerInfoResponse]
     */
    @GET("adminUser/{id}")
    suspend fun getManagerInfoByID(@Path("id") id: String): ManagerInfoResponse

    /**
     * 通过 [id] 修改用户
     * @param managerInfo [CreateManagerInfo]
     * @param id String
     * @return ResponseInfo
     */
    @PUT("adminUser/{id}")
    suspend fun modifyManagerInfo(
        @Body managerInfo: CreateManagerInfo,
        @Path("id") id: String
    ): ResponseInfo

    /**
     * 通过 [id] 删除用户
     * @param id String
     * @return ResponseInfo
     */
    @DELETE("adminUser/{id}")
    suspend fun deleteManager(@Path("id") id: String): ResponseInfo

}